Passed
Push — main ( fc01c5...e2372b )
by Andrii
02:16
created

index.ts ➔ argEnv   A

Complexity

Conditions 1

Size

Total Lines 15
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 6
dl 0
loc 15
rs 10
c 0
b 0
f 0
1
import { readFileSync } from "fs"
2
import { assigner, main, Reader } from "./main"
3
4
const {assign: $assign} = Object
5
6
export { parse } from "./parse"
7
export { argEnv }
8
export default argEnv
9
10
/**
11
 * **NB!** args, package and ENV are already picked
12
 * @param {string[]} paths
13
 * @param {*} [env] `= process.env`
14
 * @param {*} [target] `= {}`
15
 * @param {*} [reader] `= readFileSync`
16
 */
17
// TODO #4 Like `path.unshift(".env")`
18
// TODO Move to a separate module
19
function argEnv<T extends Record<string, unknown>>(paths: string[], env = process.env, target = {} as T, reader = readFileSync as Reader) {
20
  assigner(env, paths, reader, target)
21
  $assign(env, target)
22
23
  return target
24
}
25
26
main(
27
  process.env,
28
  process.argv,
29
  readFileSync,
30
  // TODO #7
31
  false
32
)
33